"""
@Author : 合肥一元数智教育科技有限公司
@Date :  2025/2/11 14:39
@Description :   流程控制

什么是流程控制？
   通过某种方式控制代码的执行流程

代码的执行顺序：
1. 顺序结构  自上而下依次执行  只要代码没有异常 那么编写的所有代码都会被执行
2. 分支结构
     2.1 单分支   满足条件则执行  不满足不执行
        语法：
          if 表达式 :
               代码块
     2.2 双分支   表达式 true  代码块1  否则  代码块2
          if 表达式 :
               代码块1
          else：
             代码块2
     2.3 多分支
          if 表达式变 :
               代码块1
          elif 表达式2 :
               代码块2
          .....
          else:
             代码块3

        match num:
            case 1:
                print('1')
            case 2:
                print('2')
            case 3:
                print('3')
            case _:
                print('default')

3. 循环结构
    3.1  for
    3.2  while
"""
# 随机数
random_number = 1
# user_input = int(input('请输入一个数字:'))
#  单分支
# if user_input == random_number:
#     print('输入的数字正确')
# else:
#     print('输入的数字不正确')

#  判定用户输入的年龄是否成年
# user_age = int(input('请输入年龄:'))
# if user_age >= 18:
#     print('成年')
# else:
#     print('未成年')

'''
   多分支结构  成绩  判定等级 
   不合格      < 60
   合格        score>=60  and  score<70
   中等        score>=70  and  score<80
   良好        score>=80  and  score<90
   优秀        score>=90  
'''

# user_score = int(input('请输入分数:'))

'''
if user_score < 60 and user_score >= 0:
    print("不合格")
elif user_score >= 60 and user_score < 70:
    print("合格")
elif user_score >= 70 and user_score < 80:
    print("中等")
elif user_score >= 80 and user_score < 90:
    print("良好")
elif user_score >= 90 and user_score <= 100:
    print("优秀")
else:  # 以上条件均不满足时 执行
    print("请输入正确的分数")

'''
'''
if 0 <= user_score < 60:
    print("不合格")
elif 60 <= user_score < 70:
    print("合格")
elif 70 <= user_score < 80:
    print("中等")
elif 80 <= user_score < 90:
    print("良好")
elif 90 <= user_score <= 100:
    print("优秀")
else:
    print("请输入正确的分数")

'''
#  多分支结构 只会选择其中一条分支执行  最先满足条件的分支
'''
if user_score >= 90:
    print("优秀")
elif user_score >= 80:
    print("良好")
elif user_score >= 70:
    print("中等")
elif user_score >= 60:
    print("合格")
else:
    print("不合格")
'''

'''
   多分支结构：
      python3.10版本后     等值判定   常量  
      match info:
        case 'hello':
            print('hello')
        case 'world':
            print('world')
        case _:
            # default code to execute if no patterns match
'''

num = '4'
match num:
    case 1:
        print('1')
    case 2:
        print('2')
    case 3:
        print('3')
    case _:
        print('default')

#  数据类型判定
match num:
    case int():
        print('int')
    case str():
        print('str')
    case bool():
        print('bool')
    case _:  # 默认执行的分支  以上分支均不满足条件时执行
        print('default')

'''
  循环结构   帮助解决程序中一些相同或相似的操作
    for 变量  in 可迭代的数据：
        重复执行的代码
        
    while
'''

#  字符串是一个可迭代数据
'''
for item in 'abcdeabcde':
    print('hello python')
'''

#  range() 生成可迭代对象  1 - 10   [1,11)
'''
#  0 - 10
for item in range(11):
    print(item)


for item in range(1, 11):
    print(item)
    

# range(start,end,step)  [start,end)  默认步长1  第三个参数 ：指定步长
for num in range(1, 11, 2):
    print(num)
    
'''
#  0 - 9
# for item in range(100):
#     print(f'hello python {item}')

#   使用for循环时 可以配合else使用  只要for循环没有提前结束  则会执行else中的内容
'''
for num in range(5):
    if num == 3:
        # break  # 结束当前循环
        continue  # 结束本次循环进入下一次循环
    print(f'hello python {num}')
else:
    print('程序没有提前结束')
'''

for num in range(5):
    # num =0
    for i in range(4):  # [0-3]
        if i == 2:
            # break  # 结束最近一次循环
            continue
        print(i, num)  # (0,0)  (1,0) (2,0)  (3,0)

'''
   while 循环
    语法：
         while 表达式 ：
              循环体
'''
count = 0
while count < 5:
    if count == 3:
        break
    print('hello python')
    # 手动改变计数器
    count += 1
else:
    print('程序没有提前结束')

'''
   判定一个数值是不是质数   只能被1和自身整除的数据
'''
num = 14
flag = True
for i in range(2, num):
    if num % i == 0:
        print('当前数据不是质数')
        break
else:
    print('当前数据是质数')

# for i in range(2, num):
#     if num % i == 0:
#         flag = False
#         break
#
# if flag:
#     print('当前数据是质数')
# else:
#     print('当前数据不是质数')
